// Iterator 它是一种机制，是一种接口，为不同的数据结构提供统一的访问机制，任何数据解构只要部署了Iterator接口，
// 就可完成遍历操作(即依次处理该数据结构的所有成员)

// 创建一个指针对象，指向数据结构的起始位置，
// 第一次调用指针对象的next()方法，将指针指向数据结构的第一个成员
// 第二次调用指针对象的next方法，将指针指向数据解构的第二个成员
// 不断调用指针对象的next方法，知道指针指向数据结构的结束位置

let arr = [1, 2, 3, 4, 5, 6]

let keys = arr.keys() //键组成的数组
let values = arr.values() // 值组成的数组
let entries = arr.entries() // 键值对组成的数组

// 数组部署的Iterator接口，所以它就可以完成遍历操作，依次处理该数据结构的所有成员
// 通过for of遍历     Iterator对象数据可以通过for of遍历出来
// for (let key of keys) {
//   console.log(key);
// }
// for (let value of values) {
//   console.log(value);
// }
// for (let entrie of entries) {
//   console.log(entrie);
// }


let obj = {
  name: "廖刘龙",
  age: 23,
  gender: '男'
}

// let okeys = Object.keys(obj);
// let ovalues = Object.values(obj)
// let oentries = Object.entries(obj)

// console.log(okeys);
// console.log(ovalues);
// console.log(oentries);

var set = new Set()
set.add('hello')
set.add('hello')
set.add('world')
// console.log(set);
// let skeys = set.keys()
// let svalue = set.values()
// let sentries = set.entries()

// console.log(skeys);
// console.log(svalue);
// console.log(sentries);

// let s = new Set([1, 2, 3, 4, 5])
// let entries1 = s.entries()
// for (let a of entries1) {
//   console.log(a);
// }

// console.log(set.has('hello'));

// set.add([1])
// let [...arr2] = set
// console.log(arr2);